package edu.uclm.esi.tysweb.ajedrez.websockets;

import java.io.IOException;
import java.util.Enumeration;
import java.util.Hashtable;

import javax.servlet.http.HttpServletRequest;

import org.apache.catalina.websocket.StreamInbound;
import org.apache.catalina.websocket.WebSocketServlet;

import edu.uclm.esi.tysweb.ajedrez.dominio.Jugador;

@SuppressWarnings("serial")
public class Notificador extends WebSocketServlet {
	private static Notificador yo; 
	private static Hashtable<String, Cliente> clientes=new Hashtable<String, Cliente>();
	
	@Override 
	//Crea el WebSocket al entrar en notificador
	protected StreamInbound createWebSocketInbound(String protocol, HttpServletRequest request) { 
		Jugador jugador=(Jugador) request.getSession().getAttribute("jugador");
		Cliente cliente=null;
		if (jugador!=null) {
			cliente=new Cliente(jugador);
			this.clientes.put(jugador.getEmail(), cliente);
		}
		return cliente;
	}
	//Encuentra el jugador que se necesita
	public static Cliente findJugador(String emailJugador) { 
		return Notificador.clientes.get(emailJugador);
	}
	
	//envia a todos los jugadores un mensaje (normalmente que acaba de llegar uno)
	public static void broadcast(String msg) { 
		Enumeration<Cliente> eClientes=clientes.elements();
		while (eClientes.hasMoreElements()) {
			Cliente cliente = eClientes.nextElement();
			try {
				cliente.enviar(msg);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
